home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / bpp / no1 / bppre.doc < prev    next >
Text File  |  1994-01-07  |  11KB  |  505 lines

  1.  
  2.                                                                   BPPreference
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.                                     BPP
  14.  
  15.                     BASIC Pre-Processor
  16.  
  17.                            Version 0.90
  18.  
  19.                             リファレンスマニュアル
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                     - 1 -
  64.  
  65.                                                                   BPPreference
  66.  
  67.  
  68.  
  69. ☆識別子について
  70.         ローカル変数、サブルーチンなどの識別子(名前)は、BASICでの識別子
  71.         の命令規則に準じます。
  72.  
  73.  
  74. ■■ #DEFINE ■■
  75.  
  76. 《書式 1》    #DEFINE macro-id [ rep-string ]
  77. 《書式 2》    #DEFINE macro-id ( param_1 [,pram_2[,…] ] ) rep-string
  78.  
  79. 《用  例》    #DEFINE NDEBUG
  80.                 #DEFINE MA 100
  81.                 #DEFINE ADD (a,b) (a)+(b)
  82.  
  83. 《解  説》    マクロを定義します。プログラム中の macro-id を rep-string に置
  84.         き換えます。
  85.                 仮引数 param_n が指定されているときは rep-string  中の仮引数を
  86.                 展開します。
  87.  
  88. 《参  照》    #IFDEF , #IFNDEF
  89.  
  90.  
  91. 《サンプル》    ' DEFINE.BPP
  92.                     #DEFINE NDEBUG
  93.                     #DEFINE MAX 100
  94.                     #DEFINE ADD(a,b) (a)+(b)
  95.                     FOR I=1 TO MAX
  96.                         PRINT ADD(I,I+1)
  97.                         #IFNDEF NDEBUG
  98.                             PRINT I
  99.                         #ENDIF
  100.                     NEXT
  101.                     END
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.                                     - 2 -
  127.  
  128.                                                                   BPPreference
  129.  
  130.  
  131. ■■  #IFNDEF ~ #ENDIF  ■■
  132.  
  133. 《書  式》    #IFDEF macro-id
  134.                     <statements>
  135.                 #ENDIF
  136.  
  137. 《解  説》    macro-id がマクロとして定義されていれば、対応する #ENDIF  まで
  138.         の文を有効にします。そうでなければ #ENDIF までの文を無効にしま
  139.         す。#IFDEF , #IFNDEF の構文はネスト出来ます。
  140.  
  141. 《参  照》    #DEFINE , #IFNDEF
  142.  
  143.  
  144. ■■  #IFNDEF ~ #ENDIF  ■■
  145.  
  146. 《書  式》    #IFNDEF macro-id
  147.                     <statements>
  148.                 #ENDIF
  149.  
  150. 《解  説》    macro-id がマクロとして定義されていなければ、 対応する  #ENDIF
  151.         までの文を有効にします。そうでなければ #ENDIF までの文を無効に
  152.         します。#IFDEF , #IFNDEF の構文はネスト出来ます。
  153.  
  154. 《参  照》    #DEFINE , #IFNDEF
  155.  
  156.  
  157. ■■  BREAK  ■■
  158.  
  159. 《書  式》    BREAK
  160.  
  161. 《解  説》    WHILE , DO ,FOR ループを1段抜け出す。
  162.  
  163. 《参  照》    WHILE , DO , FOR
  164.  
  165. 《サンプル》    ' BREAK.BPP -1が代入されたらデータの入力を中止します
  166.                 DIM D(10)
  167.                 FOR I=0 TO 10
  168.                     INPUT D(I)
  169.                     IF D(I)=-1 THEN BREAK
  170.                 NEXT
  171.                 END
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.                                     - 3 -
  190.  
  191.                                                                   BPPreference
  192.  
  193.  
  194. ■■  CALL  ■■
  195.  
  196. 《書式 1》    CALL subroutine-id
  197. 《書式 2》    CALL subroutine-id ( param_1 [ , param_2… ])
  198.  
  199. 《用例 1》    CALL MAIN
  200. 《用例 2》    CALL CATSTR ( "ABC" , "DEF" )
  201.  
  202. 《解  説》    ユーザー定義サブルーチンを呼び出します。
  203.                 パラメータ param_n  が指定されているときはそれをサブルーチンに
  204.                 引き渡します。
  205.  
  206. 《参  照》    SUB
  207.  
  208.  
  209. ■■  DEFSNG  ■■
  210. ■■  DEFDBL  ■■
  211. ■■  DEFSTR  ■■
  212. ■■  DEFINT  ■■
  213.  
  214.  
  215. 《書  式》    DEFSNG A-Z
  216.                 DEFDBL A-Z
  217.                 DEFSTR A-Z
  218.                 DEFINT A-Z
  219.  
  220.  
  221. 《解  説》    デフォルトの変数型(!,#,$,%の型指定を行わない変数の型)
  222.         を設定します。DEFSNGはデフォルトの変数型を単精度に、
  223.         DEFDBLは倍精度に、DEFSTRはもじれつ型に、
  224.         DEFINTは整数型に、それぞれ設定します。BPPの初期設定で
  225.         はDEFSNGが指定されたのと同じ状態になっています。
  226.         BASICのように変数名の1文字目による指定は出来ません。例え
  227.         ば、DEFINTはBASICでのDEFINT A-Zと等価です。
  228.         また、BASICインタプリタではDEF???の効力の範囲は実行
  229.         の順によって決まりますが、BPPではプログラムの出現の順によっ
  230.         て決まります。
  231.  
  232.  
  233. 《サンプル》    DEFINT
  234.                 GOSUB *SUBROUTINE
  235.                 A="ABC"     'ERROR!!
  236.                 END
  237.                 *SUBROUTINE
  238.                 DEFSTR
  239.                 B="CDE"     'OK!!
  240.                 RETURN
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.                                     - 4 -
  253.  
  254.                                                                   BPPreference
  255.  
  256.  
  257. ■■  DO ~ LOOP  ■■
  258.  
  259. 《書  式》    DO
  260.                     <statements>
  261.                 LOOP cond-expr
  262.  
  263. 《解  説》    条件式 cond-expr が偽になるまで ststements を実行します。 条件
  264.         式の評価は statements の実行後に行われるため、少なくとも1回は
  265.         statements が実行されます。
  266. 《参  照》    FOR , WHILE
  267.  
  268. 《サンプル》    ' DO.BPP  *が入力されると終了します。
  269.                 DO
  270.                     INPUT A$
  271.                 LOOP A$<>"*"
  272.                 END
  273.  
  274.  
  275. ■■  FOR ~ NEXT  ■■
  276.  
  277. 《書式 1》    FOR ctrl-var = from TO to [ STEP step ]
  278.                     <statements>
  279.                 NEXT
  280. 《書式 2》    FOR init-expr , cond-expr , loop-expr
  281.                     <statements>
  282.                 NEXT
  283.  
  284. 《解  説》    書式1はBASICのFOR文に準じます。
  285.                 書式2では、まず式 init-expr が実行され、その後条件式
  286.                 cond-expr が真の間 statements  と式  loop-expr  を実行します。
  287.                 statements 及び loop-expr は一度も実行されないことも有り得ます。
  288.  
  289. 《参  照》    DO , WHILE
  290.  
  291. 《サンプル》    ' FOR.BPP  1から10までの数字が2回出力されます。
  292.                 FOR I=0 TO 10 '書式1
  293.                     PRINT I
  294.                 NEXT
  295.                 FOR I=0 , I<-10 , I=I+1 '書式2
  296.                     PRINT I
  297.                 NEXT
  298.                 END
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.                                     - 5 -
  316.  
  317.                                                                   BPPreference
  318.  
  319.  
  320. ■■  IF ~ THEN ~ ELSE ~ ENDIF  ■■
  321.  
  322. 《書式 1》    IF cond-expr THEN statements_1 [ELSE statements_2 ]
  323. 《書式 2》    IF cond-expr THEN
  324.                     <statements_1>
  325.                 [ELSE
  326.                     <statements_2> ]
  327.                 ENDIF
  328. 《書式 3》    IF cond-expr_1 THEN
  329.                     <statements_1>
  330.                 ELSEIF cond-expr_2 THEN
  331.                     <statements_2>
  332.                 [ ELSE
  333.                     <statements_3> ]
  334.                 ENDIF
  335.  
  336. 《解  説》    書式1は、BASICのIF構文に準じます。
  337.                 書式2は、条件式 cond-expr が真ならばstatements_1 を、偽ならば
  338.                 statements_2 を実行します。ELSE説 <statements_2>  が指定さ
  339.                 れなければ ENDIF の次の文から実行します。
  340.                 書式3は、条件式 cond-expr_1 が真ならば statements_1 を、 そう
  341.                 でなければ条件式  cond-expr_2  を評価し、真ならば statements_2
  342.                 を、偽ならば statements_3 を実行します。
  343.                 ELSEIF節は複数個存在しても構いません。
  344.  
  345. 《サンプル》    ' IF.BPP
  346.                 INPUT N
  347.                 IF N=1 THEN
  348.                     PRINT "A"
  349.                 ELSEIF N=2 THEN
  350.                     PRINT "B"
  351.                 ELSEIF N=3 THEN
  352.                     PRINT "C"
  353.                 ELSE
  354.                     PRINT "ERROR!!"
  355.                 ENDIF
  356.                 END
  357.  
  358.  
  359. ■■  #INCLUDE  ■■
  360.  
  361. 《書  式》    #INCLUDE <filespec>
  362.  
  363. 《用  例》    #INCLUDE <COMMON.BI>
  364.  
  365. 《解  説》    ファイル filespec を、この文が有る位置に挿入します。この事をイ
  366.         ンクリュードといいます。
  367.                 インクリュードされたファイルの中で別のファイルをインクリュード
  368.                 しても構いません。
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.                                     - 6 -
  379.  
  380.                                                                   BPPreference
  381.  
  382.  
  383. ■■  MAKESTACK  ■■
  384.  
  385. 《書  式》    MAKESTACK n1,n2,n3,n4
  386.  
  387. 《用  例》    MAKESTACK 512,0,512,128
  388.  
  389. 《解  説》    スタックフレームを生成します。ユーザー定義サブルーチンを利用す
  390.         る場合には、必ずこの宣言をしておかなければなりません。
  391.                 n1 , n2 , n3 , n4 にはそれぞれ、単精度、倍精度、文字列型、整数
  392.                 型のスタックの大きさを指定します。この順番は、キートップの左上
  393.                 から並んでいる型指定記号 ! # $ % にそっています。
  394.  
  395. 《参  照》    SUB
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.                                     - 7 -
  442.  
  443.                                                                   BPPreference
  444.  
  445.  
  446. ■■  SUB ~ ENDSUB  ■■
  447. ■■  LOCAL  ■■
  448. ■■  EXITSUB  ■■
  449.  
  450. 《書  式》    SUB subroutine-id [ ( [ BYBODY ] arg1 [ , [ BYBODY ] arg2 … ]
  451.         ) ]
  452.                 [ LOCAL var1 [ , var2 … ] ]
  453.                 [ LOCAL … ]
  454.                     <statements>
  455.                 … EXITSUB …
  456.                     <statements>
  457.                 ENDSUB
  458.  
  459. 《解  説》    ユーザー定義サブルーチン subroutine-id を定義します。
  460.                 仮引数 arg1 を指定すると、CALL文でサブルーチンを呼び出すと
  461.                 きに、サブルーチンにパラメータを引き渡すことが出来ます。
  462.                 パラメータは値渡し(呼ばれた側から変更できない)ですが、キーワ
  463.                 ード BYBODY を仮引数の前に指定すると、実体を渡します(パラメー
  464.                 タをサブルーチン側から変更できます)。
  465.                 SUB定義の次の行には、そのサブルーチン内で使用するローカル変
  466.                 数を宣言します。ローカル変数の宣言は複数行に渡って記述すること
  467.                 が出来ます。
  468.                 ローカル変数と同名同型のグローバル変数が存在する場合はローカル
  469.                 変数の方が優先されます。
  470.                 サブルーチンの途中でサブルーチンを抜け出したい場合には、
  471.                 EXITSUBを使用します。SUB文で定義したサブルーチンでは
  472.                 RETURN文を使用しないでください。
  473.                 ユーザー定義サブルーチンを使用するときには、MAKESTACK
  474.                 及びCLEAR文で、十分なスタックを確保しておいてください。
  475.  
  476. 《参  照》    MAKESTACK
  477.  
  478. 《サンプル》    ' FACT.BPP  n!(nの階乗)を再帰を使って求めます。
  479.                 INPUT "n?";N
  480.                 CALL FACT(R,N)
  481.                 PRINT "n!=";R
  482.                 END
  483.  
  484.                 SUB FACT(BYBODY R,N)
  485.                     IF N=1 THEN R=1:EXITSUB
  486.                     FACT(R,N-1)
  487.                     R=R*N
  488.                 ENDSUB
  489.  
  490.  
  491. ■■  WHILE ~ WEND  ■■
  492.  
  493. 《書  式》    WHIKW cond-expr
  494.                     <statements>
  495.                 WEND
  496.  
  497. 《解  説》    cond-expr が真の間 statements を実行します。
  498.                 BASICの使用に準じます。
  499.  
  500. 《参  照》    DO , FOR
  501.  
  502.  
  503.  
  504.                                     - 8 -
  505.